package main;

public class Main {

  private DAO dao = new DAO();
  private EinUndAusgabe io = new EinUndAusgabe();

  public void dialog() throws InterruptedException {
    int eingabe = -1;
    dao.startdaten();
    while (eingabe != 0) {
      Thread.sleep(300); // gegen Netbeans-Macke bei verzoegerter Ausgabe
      System.out.println("Was wollen Sie?\n" +
              "  (0) Programm beenden\n" +
              "  (1) neues Produkt anlegen\n" +
              "  (2) neue Bestellung anlegen\n" +
              "  (3) Produkt zur Bestellung hinzufuegen\n" +
              "  (4) Posten aus Bestellung loeschen\n" +
              "  (5) Ausgabe der Produkte\n" +
              "  (6) Ausgabe der Bestellungen\n" +
              "  (7) Statistik: Produktbestellungshaeufigkeit\n" +
              "  (8) Statistik: Nie bestellte Produkte\n" +
              "  (9) Statistik: Summen der Bestellungen\n" +
              " (14) Anfrage selbst formulieren:  ");
      eingabe = io.leseInteger();
      Thread.sleep(300); // wieder fuer eine ordentliche Ausgabe
      switch (eingabe) {
        case 1:
          System.out.print("Produktname: ");
          String pname = io.leseString();
          System.out.print("Verkaufspreis: ");
          int vk = io.leseInteger();
          produktAnlegen(pname, vk);
          break;
        case 2:
          System.out.print("Kunde: ");
          String kunde = io.leseString();
          bestellungAnlegen(kunde);
          break;
        case 3:
          System.out.print("Bestellungsnummer: ");
          int bst = io.leseInteger();
          System.out.print("Produktnummer: ");
          int pn = io.leseInteger();
          System.out.print("Anzahl: ");
          int anz = io.leseInteger();
          produktInBestellungErgaenzen(bst, pn, anz);
          break;
        case 4:
          System.out.print("Bestellungsnummer: ");
          int bstnr = io.leseInteger();
          System.out.print("Postennummer: ");
          int pnr = io.leseInteger();
          produktAusBestellungLoeschen(bstnr, pnr);
          break;
        case 5:
          produkteAnzeigen();
          break;
        case 6:
          bestellungenAnzeigen();
          break;
        case 7:
          produktbestellungshaeufigkeiten();
          break;
        case 8:
          nieBestellteProdukte();
          break;
        case 9:
          bestellsummenBerechnen();
          break;
        case 14: // nicht verlangt
          System.out.println("Anfrage:");
          String anfrage = io.leseString();
          try{
            dao.anfragen(anfrage);
          }catch(Exception e){
            System.out.println(e.getMessage());
          }
      }
    }

    // TODO
    
  }

  private void produktAnlegen(String pname, int vk) {
    dao.produktAnlegen(pname, vk);
  }

  private void bestellungAnlegen(String kunde) {
    dao.bestellungAnlegen(kunde);
  }

  private void produktInBestellungErgaenzen(int bst, int pn, int anz) {
    dao.produktInBestellungErgaenzen(bst, pn, anz);
  }

  private void produktAusBestellungLoeschen(int bstnr, int pnr) {
    dao.produktAusBestellungLoeschen(bstnr, pnr);
  }

  private void produkteAnzeigen() {
    dao.produkteAnzeigen();
  }

  private void bestellungenAnzeigen() {
    dao.bestellungenAnzeigen();
  }

  private void produktbestellungshaeufigkeiten() {
    dao.produktbestellungshaeufigkeiten();
  }

  private void nieBestellteProdukte() {
    dao.nieBestellteProdukte();
  }

  private void bestellsummenBerechnen() {
    dao.bestellsummenBerechnen();
  }

  public static void main(String[] args) throws InterruptedException {
    new Main().dialog();
  }
}
